package com.tbit.uqbike.webmanager.dao.core;

import com.tbit.uqbike.object.pojo.User;
import com.tbit.uqbike.object.pojo.VipCard;
import com.tbit.uqbike.object.pojo.VipCardLog;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @Author lhx
 * @ClassName BatchGiveClubCardDao
 * @Description
 * @date 2023/3/21 15:16
 * @Version 1.0
 */
public interface BatchGiveClubCardDao {
    /**
     * 查询会员卡信息
     *
     * @param vipId
     * @return
     */
    VipCard getById(Integer vipId);

    /**
     * 查询用户信息
     *
     * @param phone
     * @param accountId
     * @return
     */
    User getuserbypa(@Param("phone") String phone, @Param("accountId") Integer accountId);

    /**
     * 查询是否存在有效会员卡
     *
     * @param userIdList
     * @param accountId
     * @return
     */
    List<Integer> getvipbypa(List<Integer> userIdList, @Param("accountId") Integer accountId);

    /**
     * 插入会员卡信息
     *
     * @param vipCardLog
     */
    void insert(VipCardLog vipCardLog);

    /**
     * 添加前判断是否存在
     *
     * @param accountId
     * @param phone
     * @return
     */
    int selectCountByAccountId(@Param("accountId") Integer accountId, @Param("phone") String phone);

    /**
     * 添加用户
     *
     * @param user
     * @return
     */
    int importUser(User user);

    /**
     * 批量查询手机号
     *
     * @param phoneList
     * @param accountId
     * @return
     */
    List<String> getuserListbypa(@Param("phoneList") List<String> phoneList, @Param("accountId") Integer accountId);

    /**
     * 批量查询手机号
     *
     * @param accountId
     * @param phoneList
     * @return
     */
    List<String> selectPhone(@Param("accountId") Integer accountId, @Param("phoneList") List<String> phoneList);

    /**
     * 批量添加用户
     *
     * @param userList
     */
    void importUserByList(List<User> userList);

    /**
     * 查询用户信息
     *
     * @param phoneList
     * @param brandId
     * @return
     */
    @MapKey("phone")
    Map<String, Map<String, Object>> getUserMap(@Param("phoneList") List<String> phoneList, @Param("brandId") Integer brandId);

    /**
     * 批量赠送会员卡
     *
     * @param vipCardLogList
     */
    void insertByList(List<VipCardLog> vipCardLogList);
}
